23527
20726
Dette spørsmålet har allerede svar her:
Express js - kan ikke omdirigere
(4 svar)
Stengt for 7 år siden.
Jeg bruker passportjs med mellomvare nedenfor. Det er antagelig å sjekke om brukeren er pålogget når han ber om visse ting. Hvis han ikke er logget på, skal han omdirigeres til påloggingssiden.
Jeg har en forespørselsrute som følger:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Denne ruten vil bli kalt når brukeren prøver å oppdatere en ressurs som heter Fantasy Team på nettstedet
auth.requiresLogin er en mellomvare som følger:
exports.requiresLogin = funksjon (req, res, neste) {
hvis (req.isAuthenticated ()) {
returner neste ()
}
return res.redirect ("/ signin");
};
Etter å ha logget på brukeren min, simulerte jeg utløpet av økten ved å slette øktkaken. Deretter sendte jeg en PUT '/ fantasyteams / 123' forespørsel om å oppdatere fantasy team nummer 123.
fantasyteams.update er rett og slett en Mongodb / Mongoose Save-operasjon:
exports.update = funksjon (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (funksjon (feil) {
res.jsonp (fantasyteam);
});
};
Som forventet fanget rutebehandleren (app.put ...) over forespørselen, send den til auth.requiresLogin mellomvare for å sjekke om brukeren er logget inn. Så det viser seg at brukeren ikke er logget inn siden jeg slettet øktkaken hans. res.redirect kalles som forventet. Nettstedet omdirigerer imidlertid ikke til påloggingssiden. Jeg ser dette i node.js-kommandolinjene:
PUT / pålogging 404 328ms
Hva gjorde jeg galt? 
Det ser ut til at problemet er at du ikke har en rutebehandler for PUT / pålogging. Den opprinnelige forespørselen var en put, så når den omdirigerer, er den fortsatt en del av den samme "put" -forespørselen fra nettleseren. Bare legg til en behandler for put / post / hva som helst med app.all ('/ signin')
3
|
Er ikke svaret du leter etter? Bla gjennom andre spørsmål merket node.js sesjonskapsler uttrykker passport.js eller still ditt eget spørsmål.